package com.ternnetwork.workflow.service;

import java.io.InputStream;

import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.ProcessDefinition;
import org.springframework.data.domain.Pageable;
import com.ternnetwork.commons.model.http.BaseResponse;
import com.ternnetwork.workflow.dto.ProcessDefinitionQueryDto;




/**
 * 流程定义服务
 * @author xuwenfeng
 *
 */
public interface ProcessDefinitionService {
	
	
	 /**
     * 布署流程
     * @param resourceName
     * @param is
     * @return
     */
	 BaseResponse deploy(String resourceName,InputStream fileInputStream);
	
	/**
	 * 挂起流程
	 * @param id
	 */
	 BaseResponse suspendProcessDefinitionById(String id);
	/**
	 * 激活已挂起流程
	 * @param id
	 */
	 BaseResponse activateProcessDefinitionById(String id);
	/**
	 * 删除流程和所有的流程实例和历史
	 * @param id
	 */
	 BaseResponse deleteDeploymentCascade(String id);
	/**
	 * 得到流程图
	 * @param id
	 * @return
	 */
	 InputStream getDiagram(String id);
	

	/**
	 * 分页查找
	 * @param pageable
	 * @param dto
	 * @return
	 */
	 BaseResponse findByPage(Pageable pageable,ProcessDefinitionQueryDto dto);
	
	/**
	 * 按ID查找流程定义
	 * @param processDefinitionId
	 * @return
	 */
	 BaseResponse getProcessDefinitionById(String processDefinitionId);
	 
	 /**
	  * 按ID查找流程定义
	  * @param processDefinitionId
	  * @return
	  */
	 ProcessDefinition getOne(String processDefinitionId);
	 
	 
	 /**
	     * 获取流程启动的表单键
	     * 用于页面跳转
	     * @param processDefinitionId
	     * @return
	     */
	BaseResponse getStartFormKey(String processDefinitionId);

}
